<?php

namespace app\system\controller;

use houdunwang\request\Request;
use houdunwang\route\Controller;
use houdunwang\validate\Validate;
use system\model\Module as ModuleModel;


class Module extends Controller
{


	public function index(ModuleModel $module)
	{
//		echo 1;die;
		$module = $module->getAll();
		return view('',compact('module'));
	}

	//设计模块
	public function design(ModuleModel $module)
	{

		//1.接受post数据
		if (IS_POST) {
			$post = Request::post();
			//1.接受post数据
			//p($post);die;
			Validate::make([
				//创建模块！
				['module_title','required','请输入模块中文名称',Validate::MUST_VALIDATE],
			]);
			//2.判断不能重复创建模块
			//考虑规范，采用目录全部小写
			$post['module_name'] = strtolower($post['module_name']);
			//在addons或者module检测，创建的模块已存在，则不允许重复创建【目录已经存在，代表是模块已经存在】

			//这边和那个常见文件夹的方法是一样的。
			if(is_dir("addons/{$post['module_name']}") || is_dir("module/{$post['module_name']}")){
				return ['valid'=>0,'message'=>'模块已存在，不能重复创建'];
			}

			//3.创建出模块的基本目录结构
			$dirs = [
				'controller','model','system','template',
			];
			foreach ($dirs as $dir) {
				//Dir::create（）在hdphp手册中组件--目录操作
				Dir::create("addons/{$post['module_name']}/{$dir}");
			}
//4.生成文件
			$module_name = $post['module_name'];
			$content = <<<str
<?php namespace addons\\{$module_name}\system;
//这边吧 命名空间写活 以后可以在别的地方调用这个方法
use module\Hdprocessor;

/**
 * 微信处理器
 * Class Processor
 * @package addons\\{$module_name}\system
 */
class Processor extends Hdprocessor
{
	public function handler()
	{

	}
}
str;
			file_put_contents("addons/{$post['module_name']}/system/Processor.php", $content);
			//5.数据存储到数据库
			$module->save($post);
			return ['valid' => 1, 'message' => '模块设计成功'];

		}


		return view();
	}



	//模块卸载
	public function del()
	{
		//接受要删除模块module_name（英文标识）
		$module_name = Request::get('module_name');
//		p($module_name);  当点击删除确认的时候 应该跳转到相应的 英文标识

		//1. 删除对应模块的目录
		Dir::del("addone/{$module_name}");
		//2. 删除数据库对应数据
		ModuleModel::where('module_name',$module_name)->delete();
		//3. 提示 成功消息
				 //跳转链接  setRedirect 跳转里面可以追到back
		 return $this->setRedirect('index')->success('删除成功');
	}
}















































































